/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.dao;

import br.com.classes.Entidade;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Kauane
 */
public class EntidadeDao {

    Connection con = null;

    public EntidadeDao() {
        con = Conecta.getConnection();
        
        
        
        
        
    }
    public String limpaString(String x){
    
        x = x.replace(".","");
        x = x.replace("-","");
        x = x.replace("/","");
        x = x.replace("(","");
        x = x.replace(")","");       
        return x;
    
    }
    

    public void CadastrarEntidade(Entidade e) throws Exception {

        
        
        String sql = ("insert into entidade values(null,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
        PreparedStatement prep = con.prepareStatement(sql);
       
        String cep = limpaString(e.getCep());       
        String telefone = limpaString(e.getTelefone()); 
        String rg = limpaString(e.getRg());
        String cpf = limpaString(e.getCpf());
        String obs = e.getObs();       
        String ddd = limpaString(e.getDDD());
        String uf = limpaString(e.getUF());       
        String cnpj = limpaString(e.getCnpj()); 
        
        prep.setString(1, e.getNome_ent());
        prep.setString(2, e.getEnd());
        prep.setString(3, e.getBairro());
        prep.setString(4, e.getCidade());
        prep.setString(5, cep);
        prep.setString(6, telefone);
        prep.setString(7, rg);
        prep.setString(8, cpf);
        prep.setString(9, obs);
        prep.setString(10, ddd);
        prep.setString(11, uf);
        prep.setString(12, e.getApelido());
        prep.setString(13, e.getIE());
        prep.setString(14, cnpj);
        prep.execute();
    }

    public void AlterarEntidade(Entidade e) {
        try {
            String sql = ("update entidade SET nome_ent=?, end=?, bairro=?, cidade=?, cep=?, telefone=?, rg=?, cpf=?, obs=?, DDD=?, UF=?, apelido=?, IE=?, cnpj=? where cod_ent=?");
            PreparedStatement prep = con.prepareStatement(sql);
 
            prep.setString(1, e.getNome_ent());
            prep.setString(2, e.getEnd());
            prep.setString(3, e.getBairro());
            prep.setString(4, e.getCidade());
            prep.setString(5, e.getCep());
            prep.setString(6, e.getTelefone());
            prep.setString(7, e.getRg());
            prep.setString(8, e.getCpf());
            prep.setString(9, e.getObs());
            prep.setString(10, e.getDDD());
            prep.setString(11, e.getUF());
            prep.setString(12, e.getApelido());
            prep.setString(13, e.getIE());
            prep.setString(14, e.getCnpj());
            prep.setInt(15, e.getCod_ent());
            prep.execute();

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
    }

    public void DeletarEntidade(Entidade e) throws Exception {

        String sql = ("delete from entidade where nome_ent = ?");
        PreparedStatement prep = con.prepareStatement(sql);

        prep.setString(1, e.getNome_ent());
        prep.execute();
    }

    public List<Entidade> ListarEntidade() {
        List<Entidade> lista = new ArrayList<Entidade>();
        try {
            String sql = "select * from entidade order by cod_ent desc";
            PreparedStatement stmt = con.prepareStatement(sql);
            ResultSet rs = stmt.executeQuery();

            while (rs.next()) {
                Entidade ent = new Entidade();
                ent.setCod_ent(rs.getInt("cod_ent"));
                ent.setNome_ent(rs.getString("nome_ent"));
                ent.setEnd(rs.getString("end"));
                ent.setBairro(rs.getString("bairro"));
                ent.setCidade(rs.getString("cidade"));
                ent.setCep(rs.getString("cep"));
                ent.setTelefone(rs.getString("telefone"));
                ent.setRg(rs.getString("rg"));
                ent.setCpf(rs.getString("cpf"));
                ent.setObs(rs.getString("obs"));
                ent.setDDD(rs.getString("DDD"));
                ent.setUF(rs.getString("UF"));
                ent.setApelido(rs.getString("apelido"));
                ent.setIE(rs.getString("IE"));
                ent.setCnpj(rs.getString("cnpj"));
               //ent.setObs(rs.getLong("obs"));
                lista.add(ent);
            }

        } catch (SQLException ex) {
        }
        return lista;

    }

    public Entidade PesquisarEntidade(int cod_ent) {
        Entidade e = null;
        try {
            String sql = "select * from entidade where cod_ent=?";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setInt(1, cod_ent);

            ResultSet rs = ps.executeQuery();

            while (rs.next()) {
                e = new Entidade();
                e.setCod_ent(rs.getInt("cod_ent"));
                e.setNome_ent(rs.getString("nome_ent"));
                e.setEnd(rs.getString("end"));
                e.setBairro(rs.getString("bairro"));
                e.setCidade(rs.getString("cidade"));
                e.setCep(rs.getString("cep"));
                e.setTelefone(rs.getString("telefone"));
                e.setRg(rs.getString("rg"));
                e.setCpf(rs.getString("cpf"));
                e.setObs(rs.getString("obs"));
                e.setDDD(rs.getString("DDD"));
                e.setUF(rs.getString("UF"));
                e.setApelido(rs.getString("apelido"));
                e.setIE(rs.getString("IE"));
                e.setCnpj(rs.getString("cnpj"));
            }
        } catch (SQLException d) {
            System.out.println(d.getMessage());
        }
        return e;
    }

    public int UltimoCodEnt() {
        int cod = 0;
        try {

            String sql = "select max(cod_ent) + 1 as codigo from entidade";
            PreparedStatement ps = con.prepareStatement(sql);

            ResultSet rs = ps.executeQuery();

            while (rs.next()) {
                cod = rs.getInt("codigo");
            }

        } catch (SQLException e) {
            System.out.println(e.getMessage());

        }
        return cod;
    }

    public List<Entidade> BuscarLimite(int num) {

        List<Entidade> lista = new ArrayList<Entidade>();
        try {

            String sql = "select * from entidade order by cod_ent desc  limit ?,200";
            PreparedStatement stmt = con.prepareStatement(sql);
            stmt.setInt(1, num);
            ResultSet rs = stmt.executeQuery();

            while (rs.next()) {
                Entidade e = new Entidade();
                e.setCod_ent(rs.getInt("cod_ent"));
                e.setNome_ent(rs.getString("nome_ent"));
                e.setEnd(rs.getString("end"));
                e.setBairro(rs.getString("bairro"));
                e.setCidade(rs.getString("cidade"));
                e.setCep(rs.getString("cep"));
                e.setTelefone(rs.getString("telefone"));
                e.setRg(rs.getString("rg"));
                e.setCpf(rs.getString("cpf"));
                e.setObs(rs.getString("obs"));
                e.setDDD(rs.getString("DDD"));
                e.setUF(rs.getString("UF"));
                e.setApelido(rs.getString("apelido"));
                e.setIE(rs.getString("IE"));
                e.setCnpj(rs.getString("cnpj"));
                lista.add(e);
            }
        } catch (SQLException ex) {
        }
        return lista;
    }

    public List<Entidade> ProcurarPorBancoLetra(String entidade) {

        List<Entidade> lista = new ArrayList<Entidade>();
        try {

            String sql = "select * from entidade where nome_ent like ?";
            PreparedStatement stmt = con.prepareStatement(sql);
            stmt.setString(1, "%" + entidade + "%");
            ResultSet rs = stmt.executeQuery();

            while (rs.next()) {

                Entidade e = new Entidade();
                e.setCod_ent(rs.getInt("cod_ent"));
                e.setNome_ent(rs.getString("nome_ent"));
                e.setEnd(rs.getString("end"));
                e.setBairro(rs.getString("bairro"));
                e.setCidade(rs.getString("cidade"));
                e.setCep(rs.getString("cep"));
                e.setTelefone(rs.getString("telefone"));
                e.setRg(rs.getString("rg"));
                e.setCpf(rs.getString("cpf"));
                e.setObs(rs.getString("obs"));
                e.setDDD(rs.getString("DDD"));
                e.setUF(rs.getString("UF"));
                e.setApelido(rs.getString("apelido"));
                e.setIE(rs.getString("IE"));
                e.setCnpj(rs.getString("cnpj"));
                lista.add(e);
            }
        } catch (SQLException ex) {
        }
        return lista;
    }

    public List<Entidade> ListarEntidadeMov() {

        List<Entidade> lista = new ArrayList<Entidade>();

        try {
            String sql = "select nome_ent from entidade";
            PreparedStatement stmt = con.prepareStatement(sql);
            ResultSet rs = stmt.executeQuery();

            while (rs.next()) {
                Entidade ent = new Entidade();
                ent.setNome_ent(rs.getString("nome_ent"));
                lista.add(ent);
            }
        } catch (SQLException ex) {
        }
        return lista;
    }
    
        public String ListarEntidadeNome(int cod_ent) {

        String nome_ent = "";
        try {
            String sql = "select nome_ent from entidade where  cod_ent = ?";
            PreparedStatement stmt = con.prepareStatement(sql);
            stmt.setInt(1, cod_ent);
            ResultSet rs = stmt.executeQuery();
            while (rs.next()) {
                nome_ent = rs.getString("nome_ent");
            }
        } catch (SQLException e) {
        }
        return nome_ent;
    }

}
